package chapter14.section7;

/**
 * 程序14-11：一个绘图面板的实现
 * 使用此程序需要再创建一个窗口，设置此面板对象作为窗口的contentPane
 */

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class DrawPanel extends JPanel implements MouseListener {
    Point lastLocation; // 保存上一次的点击位置

    public DrawPanel() {
        super();
        this.addMouseListener(this);
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
    }

    public void mouseClicked(MouseEvent e) {
        // 获得当前环境的图形设备
        Graphics2D g = (Graphics2D) this.getGraphics();
        if (lastLocation != null) {// 此分支用于清除上次的绘图
            Color bg = g.getBackground(); // 获得当前的背景色
            g.setColor(bg);
            // 用背景色在原来的位置重新绘制，以达到清除图形的目的
            g.fillRect(lastLocation.x, lastLocation.y, 101, 101);
        }
        Point p = e.getPoint();
        g.setPaint(Color.RED);
        g.drawOval(p.x, p.y, 100, 100);
        g.setFont(new Font("宋体", Font.BOLD, 10)); // 设置新字体
        g.drawString("Oval", p.x + 50, p.y + 50); //
        lastLocation = p;// 记录此次的绘图位置
    }

    // 以下的方法因为没有使用，所以无需具体实现
    public void mouseEntered(MouseEvent e) {
    }

    public void mouseExited(MouseEvent e) {
    }

    public void mousePressed(MouseEvent e) {
    }

    public void mouseReleased(MouseEvent e) {
    }
}